package polymorphism01;
/**
 * 多态的向上转型
 * 1.普通类的向上转型(向上=> 子类型转父类型)
 *  父类型 引用变量名 = new 子类();
 *  Animal
 *   ^
 *   |
 *  dog
 */
class Animal{

}

class Dog extends Animal{

}
public class Demo01 {
    public static void main(String[] args) {
        method01();
        Animal a = new Dog();//我们看到一只狗,我们把它称作动物(狗是动物的一种)
        //符合自然规律

        //Animal a2 = new Animal();
        //Dog d = new Animal();//我们看到一只动物,把它称作狗(动物是狗的一种)
        //不符合自然规律
        //把父类型对象直接赋值给子类型,是不允许的
    }
    private static void method01() {
        Dog dog = new Dog();//我们看到一只狗(new Dog()),我们把它称作狗(赋值号左边的类型是Dog)
        Animal a1 = dog;// 这句代码就相当于 Animal a1 = new Dog();这就相当于把这只狗称作了动物(赋值号左边的类型是动物)
    }
}
